home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 2: Applications / Linux Cubed Series 2 - Applications.iso / database / postgres / mpsql-1.001 / mpsql-1~ / mpsql-1.0 / menu.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-01-29  |  15.8 KB  |  439 lines

  1. /************************************************************************/
  2. /* Module :  menu.c                                    */
  3. /* Purpose: menu module                                        */
  4. /* By     :      Keith R. Davis                                */
  5. /* Date   :    9/9/95                                    */
  6. /* Notes  :   Copyright(c) 1996 White River Software                    */
  7. /************************************************************************/
  8.  
  9. #include <Xm/Xm.h>            /* motif lib header        */
  10. #include <Xm/RowColumn.h>        /* row/col widget header    */
  11. #include <Xm/CascadeB.h>        /* cascade button widget header    */
  12. #include <Xm/Separator.h>               /* separator widget header      */
  13. #include <Xm/PushB.h>                /* push button widget header    */
  14. #include <Xm/ToggleB.h>                 /* toggle button widget header  */
  15. #include <X11/xpm.h>                /* xpm lib header        */
  16. #include <string.h>            /* string header        */
  17. #include <stdio.h>                      /* stdio header                 */
  18.  
  19. #include "mquel.h"                      /* mquel module header          */
  20. #include "menu.h"            /* menu module header            */
  21. #include "callback.h"                   /* callback header              */
  22.  
  23. /************************************************************************/
  24. /* Function: CreateMenuBar                                              */
  25. /* Purpose : creates the applications menu                              */
  26. /* Params  : parent : menu's parent widget                              */
  27. /* Returns : menu widget                                                */
  28. /* Notes   :                                                            */
  29. /************************************************************************/
  30.  
  31. Widget CreateMenuBar(Widget parent)
  32. {
  33.     Widget    menu;        /* menu widget */
  34.  
  35.     /* create a menubar and add the additional menu panes */
  36.     menu = XmCreateMenuBar(parent, "menu", NULL, 0);
  37.  
  38.     CreateFilePane(menu);
  39.     CreateEditPane(menu);
  40.     CreateQueryPane(menu);
  41.     CreateOptionsPane(menu);
  42.     CreateBufferPane(menu);
  43.     CreateHelpPane(menu);
  44.  
  45.     XtManageChild(menu);
  46.  
  47.     return(menu);
  48.      
  49. }
  50.  
  51. /************************************************************************/
  52. /* Function: CreateFilePane                                             */
  53. /* Purpose : creates the applications file menu                         */
  54. /* Params  : parent : menu's parent widget                              */
  55. /* Returns : nothing                                                    */
  56. /* Notes   :                                                            */
  57. /************************************************************************/
  58.  
  59. void CreateFilePane(Widget parent)
  60. {
  61.     Widget    cascade,    /* cascade menu widget            */
  62.         submenu,    /* pull down menu widget    */
  63.         button1,    /* connect menu button            */
  64.         button2,    /* exit menu button        */
  65.                 button3,        /* separator                    */
  66.             button4,    /* new menu button        */
  67.                 button5,    /* open menu button        */
  68.             button6,    /* save menu button        */
  69.             button7,    /* save as menu button        */
  70.             button8,    /* separator                */
  71.                 button11,       /* delete buffer button         */
  72.                 button12,       /* separator                    */
  73.             button9,    /* print menu button        */
  74.                 button10;       /* separator                    */
  75.  
  76.     /* create the pulldown part of the file menu */
  77.     submenu = XmCreatePulldownMenu(parent, "fileSubmenu",
  78.                     NULL, 0);
  79.  
  80.     /* create  the 'FILE' menu */
  81.     cascade = XtVaCreateManagedWidget("file",
  82.                       xmCascadeButtonWidgetClass,
  83.                       parent,
  84.                       XmNsubMenuId, submenu,
  85.                       NULL);
  86.  
  87.     /*add the selections to the 'FILE' menu */
  88.     button1 = XtCreateManagedWidget("connect",
  89.                     xmPushButtonWidgetClass,
  90.                     submenu, NULL, 0);
  91.  
  92.     button3 = XtCreateManagedWidget("sep1", 
  93.                     xmSeparatorWidgetClass,
  94.                     submenu, NULL, 0);
  95.  
  96.     button4 = XtCreateManagedWidget("new",
  97.                     xmPushButtonWidgetClass,
  98.                     submenu, NULL, 0);
  99.  
  100.     button5 = XtCreateManagedWidget("open",
  101.                     xmPushButtonWidgetClass,
  102.                     submenu, NULL, 0);
  103.  
  104.     button6 = XtCreateManagedWidget("save",
  105.                     xmPushButtonWidgetClass,
  106.                     submenu, NULL, 0);
  107.  
  108.     button7 = XtCreateManagedWidget("saveas",
  109.                     xmPushButtonWidgetClass,
  110.                      submenu, NULL, 0);
  111.  
  112.     button8 = XtCreateManagedWidget("sep2", 
  113.                     xmSeparatorWidgetClass,
  114.                     submenu, NULL, 0);
  115.  
  116.     button11 = XtCreateManagedWidget("deletebuffer",
  117.                      xmPushButtonWidgetClass,
  118.                      submenu, NULL, 0);
  119.  
  120.     button12 = XtCreateManagedWidget("sep4", 
  121.                      xmSeparatorWidgetClass,
  122.                      submenu, NULL, 0);
  123.  
  124.     button9 = XtCreateManagedWidget("print",
  125.                     xmPushButtonWidgetClass,
  126.                      submenu, NULL, 0);
  127.  
  128.     button10 = XtCreateManagedWidget("sep3", 
  129.                     xmSeparatorWidgetClass,
  130.                     submenu, NULL, 0);
  131.  
  132.     button2 = XtCreateManagedWidget("exit",
  133.                     xmPushButtonWidgetClass,
  134.                     submenu, NULL, 0);
  135.  
  136.     /* install the callback functions */
  137.     XtAddCallback(button1, XmNactivateCallback, ConnectCallback, NULL);
  138.     XtAddCallback(button4, XmNactivateCallback, NewCallback, NULL);
  139.     XtAddCallback(button5, XmNactivateCallback, OpenCallback, NULL);
  140.     XtAddCallback(button6, XmNactivateCallback, SaveCallback, NULL);
  141.     XtAddCallback(button7, XmNactivateCallback, SaveAsCallback, NULL);
  142.     XtAddCallback(button2, XmNactivateCallback, CloseCallback, NULL);
  143.     XtAddCallback(button11, XmNactivateCallback, DeleteBufferCallback, NULL);
  144.     XtAddCallback(button9, XmNactivateCallback, PrintCallback, NULL);
  145. }
  146.  
  147. /************************************************************************/
  148. /* Function: CreateEditPane                                             */
  149. /* Purpose : creates the applications edit menu                         */
  150. /* Params  : parent : menu's parent widget                              */
  151. /* Returns : nothing                                                    */
  152. /* Notes   :                                                            */
  153. /************************************************************************/
  154.  
  155. void CreateEditPane(Widget parent)
  156. {
  157.   Widget    cascade,    /* cascade menu widget            */
  158.                 submenu,    /* pull down menu widget    */
  159.         button1,    /* cut menu button            */
  160.         button2,    /* copy menu button            */
  161.                 button3,        /* paste menu button            */
  162.                 sep1,           /* menu seperator               */
  163.                 button4;        /* clear result win button      */
  164.  
  165.   /* create the pulldown part of the query menu */
  166.   submenu = XmCreatePulldownMenu(parent, "editSubmenu",
  167.                  NULL, 0);
  168.  
  169.   /* create  the 'QUERY' menu */
  170.   cascade = XtVaCreateManagedWidget("edit",
  171.                     xmCascadeButtonWidgetClass,
  172.                     parent,
  173.                     XmNsubMenuId, submenu,
  174.                     NULL);
  175.  
  176.   /*add the selections to the 'EDIT' menu */
  177.   button1 = XtCreateManagedWidget("cut",
  178.                   xmPushButtonWidgetClass,
  179.                   submenu, NULL, 0);
  180.   
  181.   button2 = XtCreateManagedWidget("copy",
  182.                   xmPushButtonWidgetClass,
  183.                   submenu, NULL, 0);
  184.  
  185.   button3 = XtCreateManagedWidget("paste",
  186.                   xmPushButtonWidgetClass,
  187.                   submenu, NULL, 0);
  188.  
  189.   sep1 = XtCreateManagedWidget("sep1", 
  190.                    xmSeparatorWidgetClass,
  191.                    submenu, NULL, 0);
  192.  
  193.   button4 = XtCreateManagedWidget("clearresult",
  194.                   xmPushButtonWidgetClass,
  195.                   submenu, NULL, 0);
  196.   
  197.   /* install the callback functions */
  198.   XtAddCallback(button1, XmNactivateCallback, CutCallback, NULL);
  199.   XtAddCallback(button2, XmNactivateCallback, CopyCallback, NULL);
  200.   XtAddCallback(button3, XmNactivateCallback, PasteCallback, NULL);
  201.   XtAddCallback(button4, XmNactivateCallback, ClearResultCallback, NULL);
  202. }
  203.  
  204. /************************************************************************/
  205. /* Function: CreateQueryPane                                            */
  206. /* Purpose : creates the applications query  menu                       */
  207. /* Params  : parent : menu's parent widget                              */
  208. /* Returns : nothing                                                    */
  209. /* Notes   :                                                            */
  210. /************************************************************************/
  211.  
  212. void CreateQueryPane(Widget parent)
  213. {
  214.     Widget    cascade,    /* cascade menu widget            */
  215.         submenu,    /* pull down menu widget    */
  216.         button1;    /* execute qy menu button    */
  217.  
  218.     /* create the pulldown part of the query menu */
  219.     submenu = XmCreatePulldownMenu(parent, "querySubmenu",
  220.                     NULL, 0);
  221.  
  222.     /* create  the 'QUERY' menu */
  223.     cascade = XtVaCreateManagedWidget("query",
  224.                       xmCascadeButtonWidgetClass,
  225.                       parent,
  226.                       XmNsubMenuId, submenu,
  227.                       NULL);
  228.  
  229.     /*add the selections to the 'QUERY' menu */
  230.     button1 = XtCreateManagedWidget("executeqy",
  231.                     xmPushButtonWidgetClass,
  232.                     submenu, NULL, 0);
  233.  
  234.     /* install the callback functions */
  235.     XtAddCallback(button1, XmNactivateCallback, ExecSQLCallback, NULL);   
  236. }
  237.  
  238. /************************************************************************/
  239. /* Function: CreateOptionsPane                                          */
  240. /* Purpose : creates the applications option menu                       */
  241. /* Params  : parent : menu's parent widget                              */
  242. /* Returns : nothing                                                    */
  243. /* Notes   :                                                            */
  244. /************************************************************************/
  245.  
  246. void CreateOptionsPane(Widget parent)
  247. {
  248.     Widget    cascade,    /* cascade menu widget            */
  249.         submenu,    /* pull down menu widget    */
  250.         button1,    /* spool file button        */
  251.                 button2,    /* col width file button    */
  252.                 sepselect,      /* delimtier menu button        */
  253.                 outselect,      /* output menu button           */
  254.                 sepmenu,        /* delimiter menu               */
  255.                 outmenu,        /* output menu                  */
  256.                 sep1,           /* separator                    */
  257.                 sep2,           /* separator                    */
  258.                 button3;        /* save options button          */
  259.  
  260.     /* create the pulldown part of the option menu */
  261.     submenu = XmCreatePulldownMenu(parent, "optionSubmenu",
  262.                     NULL, 0);
  263.  
  264.     /* create  the 'OPTION' menu */
  265.     cascade = XtVaCreateManagedWidget("options",
  266.                       xmCascadeButtonWidgetClass,
  267.                       parent,
  268.                       XmNsubMenuId, submenu,
  269.                       NULL);
  270.  
  271.     /*add the selections to the 'OPTION' menu */
  272.     AppWidgetsPtr->spoolfile = XtCreateManagedWidget("spoolfile",
  273.                              xmPushButtonWidgetClass,
  274.                              submenu, NULL, 0);
  275.  
  276.     AppWidgetsPtr->colwidth = XtCreateManagedWidget("colwidth",
  277.                             xmPushButtonWidgetClass,
  278.                             submenu, NULL, 0);
  279.  
  280.     sep1 = XtCreateManagedWidget("sep1", 
  281.                  xmSeparatorWidgetClass,
  282.                  submenu, NULL, 0);
  283.  
  284.  
  285.     sepselect = XmCreatePulldownMenu(submenu, "sepselect",
  286.                     NULL, 0);
  287.  
  288.     XtVaSetValues(sepselect, XmNradioBehavior, TRUE, NULL);
  289.  
  290.     sepmenu = XtVaCreateManagedWidget("sepmenu",
  291.                     xmCascadeButtonWidgetClass,
  292.                     submenu,
  293.                     XmNsubMenuId, sepselect,
  294.                     NULL);
  295.  
  296.     AppWidgetsPtr->none = XtVaCreateManagedWidget("none", xmToggleButtonWidgetClass,
  297.                           sepselect, 
  298.                           XmNvisibleWhenOff, TRUE,
  299.                           XmNindicatorSize, 15,
  300.                           XmNfillOnSelect, TRUE,
  301.                           NULL);
  302.  
  303.     
  304.     AppWidgetsPtr->tab = XtVaCreateManagedWidget("tab", xmToggleButtonWidgetClass,
  305.                          sepselect,
  306.                          XmNvisibleWhenOff, TRUE,
  307.                          XmNindicatorSize, 15,
  308.                          XmNfillOnSelect, TRUE,
  309.                          NULL);
  310.  
  311.     AppWidgetsPtr->space = XtVaCreateManagedWidget("space", xmToggleButtonWidgetClass,
  312.                            sepselect, 
  313.                            XmNvisibleWhenOff, TRUE,
  314.                            XmNindicatorSize, 15,
  315.                            XmNfillOnSelect, TRUE,
  316.                            NULL);
  317.  
  318.     AppWidgetsPtr->comma = XtVaCreateManagedWidget("comma", xmToggleButtonWidgetClass,
  319.                            sepselect, 
  320.                            XmNvisibleWhenOff, TRUE,
  321.                            XmNindicatorSize, 15,
  322.                            XmNfillOnSelect, TRUE,
  323.                            NULL);
  324.  
  325.     outselect = XmCreatePulldownMenu(submenu, "outselect",
  326.                     NULL, 0);
  327.  
  328.     outmenu = XtVaCreateManagedWidget("outmenu",
  329.                     xmCascadeButtonWidgetClass,
  330.                     submenu,
  331.                     XmNsubMenuId, outselect,
  332.                     NULL);
  333.  
  334.     AppWidgetsPtr->tglspool = XtVaCreateManagedWidget("spoolresults",
  335.                               xmToggleButtonWidgetClass,
  336.                               outselect,
  337.                               XmNvisibleWhenOff, TRUE,
  338.                               XmNindicatorSize, 15,
  339.                               XmNfillOnSelect, TRUE,
  340.                               NULL);
  341.  
  342.     AppWidgetsPtr->tglcol = XtVaCreateManagedWidget("colheadings",
  343.                             xmToggleButtonWidgetClass,
  344.                             outselect,
  345.                             XmNvisibleWhenOff, TRUE,
  346.                             XmNset, TRUE,
  347.                             XmNindicatorSize, 15,
  348.                             XmNfillOnSelect, TRUE, 
  349.                             NULL);
  350.  
  351.     AppWidgetsPtr->tglecho = XtVaCreateManagedWidget("echoqy",
  352.                              xmToggleButtonWidgetClass,
  353.                              outselect,
  354.                              XmNvisibleWhenOff, TRUE,
  355.                              XmNset, TRUE,
  356.                              XmNindicatorSize, 15,
  357.                              XmNfillOnSelect, TRUE, 
  358.                              NULL);
  359.  
  360.      sep1 = XtCreateManagedWidget("sep1", 
  361.                   xmSeparatorWidgetClass,
  362.                   submenu, NULL, 0);
  363.  
  364.      button3= XtCreateManagedWidget("saveopt",
  365.                     xmPushButtonWidgetClass,
  366.                     submenu, NULL, 0);
  367.  
  368.  
  369.     /* install the callback functions */
  370.     XtAddCallback(AppWidgetsPtr->spoolfile, XmNactivateCallback, SpoolCallback, NULL);
  371.     XtAddCallback(AppWidgetsPtr->colwidth, XmNactivateCallback, ColWidthCallback, NULL);
  372.     XtAddCallback(button3, XmNactivateCallback, SaveOptCallback, NULL);
  373. }
  374.  
  375. /************************************************************************/
  376. /* Function: CreateBufferPane                                           */
  377. /* Purpose : creates the applications buffer menu                       */
  378. /* Params  : parent : menu's parent widget                              */
  379. /* Returns : nothing                                                    */
  380. /* Notes   :                                                            */
  381. /************************************************************************/
  382.  
  383. void CreateBufferPane(Widget parent)
  384. {
  385.    Widget    cascade;   
  386.  
  387.    /* create the pulldown part of the buffer menu */
  388.    AppWidgetsPtr->buffermenu = XmCreatePulldownMenu(parent, "bufferSubmenu",
  389.                             NULL, 0); 
  390.    
  391.    /* create  the 'BUFFER' menu */
  392.    cascade = XtVaCreateManagedWidget("buffers",
  393.                      xmCascadeButtonWidgetClass,
  394.                      parent,
  395.                      XmNsubMenuId, AppWidgetsPtr->buffermenu,
  396.                      NULL);
  397.    
  398.    /* install the callback function */
  399.    XtAddCallback(cascade, XmNcascadingCallback, CascadeCallback, NULL);  
  400. }
  401.  
  402. /************************************************************************/
  403. /* Function: CreateHelpPane                                             */
  404. /* Purpose : creates the applications help menu                         */
  405. /* Params  : parent : menu's parent widget                              */
  406. /* Returns : nothing                                                    */
  407. /* Notes   :                                                            */
  408. /************************************************************************/
  409.  
  410. void CreateHelpPane(Widget parent)
  411. {
  412.     Widget    cascade,    /* cascade menu widget            */
  413.         submenu,    /* pull down menu widget    */
  414.         button1;    /* about menu button        */
  415.  
  416.     /* create the pulldown part of the help menu */
  417.     submenu = XmCreatePulldownMenu(parent, "helpSubmenu",
  418.                     NULL, 0);
  419.  
  420.     /* create  the 'HELP' menu */
  421.     cascade = XtVaCreateManagedWidget("help",
  422.                       xmCascadeButtonWidgetClass,
  423.                       parent,
  424.                       XmNsubMenuId, submenu,
  425.                       NULL);
  426.  
  427.     /* make this widget the help widget for this menu bar */
  428.     XtVaSetValues(parent, XmNmenuHelpWidget, cascade, NULL);
  429.  
  430.     /*add the selections to the 'ABOUT' menu */
  431.     button1 = XtCreateManagedWidget("about",
  432.                     xmPushButtonWidgetClass,
  433.                     submenu, NULL, 0);
  434.  
  435.     /* install the callback functions */
  436.     XtAddCallback(button1, XmNactivateCallback, AboutCallback, NULL);
  437. }
  438.  
  439.